.Concepto de planificacion (I)
- El objetivo es aumentar el rendimiento y maximizar el uso de la CPU.

.Scheduler y dispatcher
- El Scheduler se encarga de elegir el siguiente proceso.
- El Dispatcher conmuta los trabajos, se encarga de el intercambio de control de ejecucion. (Interrupciones, etc.).
- Esto es frecuente por lo que es necesario que se acelere este proceso, gracias al hardware el Dispatcher hace las operaciones mas rapido.
- El Dispatcher guarda la forma de acceder a las diferentes regiones de memoria de un proceso.

- Hay llamadas bloqueantes(Espera de un recurso, espera por un semaforo) y no bloqueantes(fork etc.).
- Cuando hay una interrupcion el dispatcher puede dar paso al proceso interrumpido, por ejemplo al hacer un fork se crea un hijo pero el padre se sigue ejecutando.

- Hay mas planificadores que el scheduler(Este es a corto plazo).
- A largo plazo controla el grado de multiprogramacion ya que se encarga de cargar los procesos en memoria, actualmente nosotros somos los que cargamos los procesos.
- Planificacion a corto plazo  (Scheduler) de los procesos que hay en la cola de preparados decide cual se tiene que ejecutar. Si no hay ninguno en cola se ejecuta un proceso null, que no hace nada que consuma recursos, solo espera a que llegue ottro proceso.
- Planificador a medio plazo, se encarga de administrar la solicitud de memoria dinamica cuando se supera la memoria que esta disponible fisicamente. De memoria a disco swapout al reves swapin, mete o saca procesos. Cuando la memoria llega al limite suele quitar bloqueado o los que mas CPU hayan usado recientemente.
- La desalojacion es temporal. Y tendra que hacer un swapin para volver a la ejecucion. Los candidatos son los que estan en listo para ejecutarse.
- Con el swapin y swapout puede producir vapuleos que es el continuo swapin y swapout al mismo proceso. 

.Criterios de evaluacion
- En que nos basamos para decidir la bondad de un planificador, nos basaremos en una serie de objetivos.
- Criterios de trato justo y equidad, todos los procesos tienen que llegar a ejecutarse en algun momento en la CPU. Ademas todos los procesos deben  tener las mismas oportunidades de ejecutarse.
- El uso del procesador queremos que sea alto, osea que este el mayor tiempo posible ejecutandose un proceso en la CPU.
- El grado de sobrecarga, queremos que el planificador use el minimo de recursos posibles.
- Rendimiento (througput) numero de trabajos completados por unidad de tiempo. Este criterio no es muy fiable, pero a veces se tiene en cuenta.
- Tiempo de estancia (o de retorno), es el tiempo desde que se lanza un proceso hasta que termina, teniendo en cuenta las colas etc.
- Tiempo de espera, es el tiempo de espera en CUALQUIER cola y el tiempo de espera por recursos tambien. Que este bloqueado o listo etc.
- Tiempo de respuesta, desde que se realiza una peticion hasta que se obtiene una respuesta.
- En los sistemas interactivos se valora mas que los tiempos de esperas sean bajos, para que el usuario se sienta atendido.

.Algoritmos de planificacion
- Algoritmo sin requisa, el proceso se segui ejecutando hasta que finalice o hasta que se haga una entrada o salida.
	Entre ellos:  FIFO
		      Algoritmos con prioridad sin requisa:
				- SJF
							    
- Los algoritmos con requisa intentan evitar el monopolio de uso de la CPU.
- Entre ellos estan:  Algoritmos con prioridad y con requisa: 
				- SJF con requisa
		      Round robin
		      Colas multinivel
		      Colas multinivel realimentadas

.Algoritmos de planificacion (FIFO)
- FIFO: First In First Out.
- La cola de listos se maneja como una cola FIFO
- Ventajas: Facil de programar.
- Desventajas: como es sin requisa puede haber monopolio. Un proceso mal programado entra en bucle infinito y acapara toda la CPU.
- Dependiendo del tipo de proceso que llegue este algoritmo funcionara mejor o peor.
- Efecto convoy: como se ejecuta con estas caracteristicas sucede que los procesos interactivos (alto uso de entrada y salida) se ven perjudicados por los de alto uso de CPU. Por lo que no se hace uso optimo de los recursos de entrada y salida.

- Diagramas de Gant, es un esquema temporal de la gesiton de los procesos.
	No representamos la ejecucion del dispatcher.
	Tiempo medio de estancia, se suman las u.t en las que se ha cambiado de proceso y se divide entre el numero de trabajos.

	 _______________________________________________________________
	|_____________T1________________________|__ T2___|_____T3_______|
	0					12       15		21
	
	t = (12+15+21)/3 = 16 u.t.
	 ______________________________________________________
	|___T2___|_____T3_______|_____________T1_______________|
	0	 3		9			       21

	t =(3+9+21)/3 =  11 u.t.

.Algoritmo con prioridades
- Se suelen basar las prioridades en recursos internos.
- Los procesos pueden morir de inanicion, es decir no pueda ejecutarse.

.SJF
- Es un algoritmo sin requisa.
- El primero el mas corto.
- Se le asigna la CPU cuya duracion de la siguiente rafaga sea mas corta.
- El inconveniente es que un proceso no se sabe cual es la duracion de la siguente rafaga, solo se puede predecir en funcion de la historia pasada.
- Un proceso de rafagas cortas en el futuro sigue siendo de rafagas cortas.
- Sigue siendo sin requisa por lo que sigue habiendo monopolio.
- No existe efecto convoy y se minimizan los tiempos de respuesta.
- Para predecir se usa una formula (Mirar diapositiva)
- Se predice la duracion de la siguiente rafaga segun la rafaga actual.
- Alfa se toma como 1/2 normalmente.

.Planificacion con requisa
- La requisa consiste en, si llega un proceso que la duracion de la siguiente rafaga es mas corta que lo que le queda al proceso actual, se le da prioridad.

.Round-robin
- Limitar el uso de la CPU por el proceso que se esta ejecutando a un maximo que se da por la interrupcion de reloj (Quantum) provoca una interrupcion que se aprovecha para desalojar el proceso.
- Pretende repartir el tiempo de CPU entre todos los procesos.
- Se maneja la cola de listos como circular, se asigna la CPU al primero y cuando termine el Quantum se pone al final.
- Si el proceso no ocupa todo el quantum desaloja voluntariamente la CPU.

.Colas multinivel
- Los procesos se clasifican en colas por orden de prioridad.
- Hay un algoritmo que decide que cola se ejecutara.

.Colas multinivel realimentada
- Es igual que el multinivel, pero existe un algoritmo para aumentar y disminuir la prioridad de las colas.
- Se suele aadir una cola con la prioridad mas alta para tareas del sistema la cual no puede variar la prioridad.
- Normalmente los hilos se colocan en la cola de mayor prioridad.
- Los procesos tienen que hacercarse al Quantum de la cola lo maximo posible, si el proceso cede la ejecucion demasiado pronto se le sube a una cola de mayor prioridad, si pasa lo contrario y sobrepasa el Quantum de la cola se le baja a una cola de menor prioridad.
- Se priorizan los procesos interactivos.
- Si el cociente (uso de CPU)/(Uso E/S) es bajo es candidato a ser ascendido por ser mas interactivo.

.Planificacion en W2K(Generalidades)
- Windows trata de beneficiar  las acciones interactivas.
- Lo que habra en la cola de listos seran hilos que son los mas interactivos.
- Se ejecuta lo que este en la cola de listos.
- (Los numero 16 - 31 y  1 - 15 son numeros de cola con diferentes Quantum cada uno, a mayor numero mas prioridad, en UNIX es al reves).

.Quantum
- Se habla de unidades logicas (u.l.)
- Un tick es una interrupcion de reloj, el Quantum de mide en una cantidad de tick. En cada tick de reloj se resta 3 u.l. al Quantum.
- La version Professional tiene que ser mas interactivo pero tiene menos rendimiento que la version servidor.

.Ejecucion del planificador
- Finalizacion de Quantum, cesion  involuntaria.
- El hilo pasa a espera, cesion voluntaria.
- El hilo finaliza la ejecucion,  cesion voluntaria.

.Ajuste de prioridad
- Decay -> offset (-)
- Boost -> offset (+)

.Planificacion en UNIX
- Tiene round-robin.
- Beneficia las tareas interactivas. O que tienen poco uso de CPU.
- Aqui hablaremos de procesos no de hilos.
- Tiene 32 colas, la prioridad mas alta en valor no es la mas alta. Menos numero mayor prioridad. Prioridad 30 es mas prioritario que 100.
- Los procesos tienen varias prioridades, se divide la prioridad entre cuatro y se asigna a una cola. 0/4 cola 0, 3/4 cola 0, 4/4 cola 1...
	Dentro de las colas no hay prioridad va por round-robin.
- Se ejecuta el proceso que este en la primera cola y en la primera posicion.
- Se requisa un proceso por expulsion si llega uno con prioridad mayor.(Cesion involuntaria)
- Cuando expira el quantum tambien se produce cesionm involuntaria.

.Colas
- Proc es el equivalente a la task_struct.
- Colas con round-robin de prioridades dinamicas.

.Calculo de prioridades
- Cuanto mas tiempo se ejecuta un proceso va aumentando su valor de prioridad, lo que disminuye su prioridad.
- 